#pragma once
#include "PlayerColor.h"
#include "PlayerPack.h"

namespace catan
{
	class Player : public BoardItem
	{
	public:
		Player(void);
		~Player(void);
		int GetTotalVictoryPoint();

		template<class PlayerItemType>
		PlayerItemType& Get(){}

// 		
// 		template<> Roads& Get<Roads>(){ return mPlayerPack->mRoads; }
// 
// 		template<> Houses& Get<Houses>(){ return mPlayerPack->mHouses; }
// 		
// 		template <> Settlements& Get<Settlements>(){ return mPlayerPack->mSettlements; }

		
		BuildPoints mBuildPoints;
		FieldResources mFieldResources;
		DevelopmentCards mDevelopmentCards;
		ResourceCards mResourceCards;
		int mVictoryNum;
		PlayerColor::Enum mColor;

		Handle<PlayerPack> mPlayerPack;
		bool mUseCarded;

	public:
		template<class Serializer>
		void serialize(Serializer & s, const unsigned int version)
		{
			s & mBuildPoints & mFieldResources & mDevelopmentCards & mResourceCards & mVictoryNum & mColor & mPlayerPack & mUseCarded;
		}
	};
}	